1首先webpack的运行流程是一个串行的流程，从启动webpack到结束的这个过程呢，它主要会经历以下几个步骤：
1.先初始化参数，就是webpack会读取我们开发者配置的webpack.config.js这个文件或者是从shell语句中去获取一些必要的参数，
最终会得到一个初始化的参数。
2.开始编译，将上一步得到的这个参数去初始化compiler对象，将所需要的webpack插件进行实列化，
在webpack这个事件流上去挂载一些插件的钩子，这样子的话，在构建的过程中，
插件它就具备了去改动、产出结果的能力，最后是执行对象的run方法开始执行编译。
3.确认入口，从我们的配置文件去读取entry入口，找到所有的配置文件，进行一个依赖收集。
4.编译模块(build module 完成模块编译)，在我们进行依赖收集的过程中，会对所有的依赖文件进行编译，这个编译过程就要依赖loaders,
它会根据开发者定义的不同loaders,进行一些解析，最终会解析生成抽象语法树，找到所有的一个依赖文件过程，它其实是通过递归实现的。
5.完成模块编译，经过第四步使用loader翻译完所有的模块，得到了每个模块被翻译后的一个最终内容，以及它们之间的一个依赖关系，
也就是第五步它主要就是输出一个依赖关系。
6.seal 输出资源，根据入口和模块之间的一个依赖关系，它会组装成一个个包含多个模块的chunk,再把每个chunk转换成一个单独的文件，加入到输出列表。
这一步是可以修改输出内容的一个最后机会。
7.emit 输出完成，在确定好输出内容后，根据配置确定输出的路径和文件名。就是output, 把文件内容写入到文件系统中。

最后补充：webpack的打包结果，实际上就是一个立即执行函数，它会把一个对象命名为modules,传入这个立即执行函数作为参数，
这个对象的话，它的一个key值就是我们这个依赖路径，value值就是打包后的这个脚本。